﻿<!DOCTYPE HTML>
<!-- saved from url=(0086)http://172.13.19.31:6060/note_html/工具/Apache-Maven（项目构建）/1005010-仓库简介.html -->
<!DOCTYPE html PUBLIC "" ""><HTML><HEAD><META content="IE=11.0000" 
http-equiv="X-UA-Compatible">
 
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<TITLE>仓库简介</TITLE> <LINK href="仓库简介_files/standalone.css" rel="stylesheet"> 
<LINK href="仓库简介_files/overlay-apple.css" rel="stylesheet"> <LINK href="仓库简介_files/article_edit.css" 
rel="stylesheet"> 
<STYLE type="text/css">
	#content{
		margin: 5px 10px;
	}
</STYLE>
	 <!-- 代码高亮 -->	 <LINK href="仓库简介_files/shCoreEclipse.css" rel="stylesheet">
	 <LINK href="仓库简介_files/my-highlighter.css" rel="stylesheet"> 
<META name="GENERATOR" content="MSHTML 11.00.10586.545"></HEAD> 
<BODY>
<DIV id="content">
<H1 align="center">仓库简介</H1>
<P align="right" 
style="margin: 0px 10px 0px 0px; padding: 0px;">最后修改时间：2016-02-03 16:32:59</P>
<HR style="border-width: 2px; border-color: lime;">

<H3>简介</H3>
<P style="text-indent: 0.8cm;">没有 Maven 时，项目用到的 .jar 文件通常需要拷贝到 /lib 
目录，项目多了，拷贝的文件副本就多了，占用磁盘空间，且难于管理。Maven 
使用一个称之为仓库的目录，根据构件的坐标统一存储这些构件的唯一副本，在项目中通过依赖声明，可以方便的引用构件。 </P>
<H3>仓库的布局</H3>
<DIV>
<DIV align="left" style="padding: 5px 0px;"><FONT>构件都有唯一的坐标，Maven 
根据坐标管理构件的存储。如以下对 spring-orm-3.2.0 的存储：</FONT></DIV>
<DIV align="left"><IMG alt="图片不存在" src="仓库简介_files/20160129-01.png"></DIV>
<DIV align="left" 
style="padding: 5px 0px;"><FONT>文件路径对应了：groupId/artifactId/version/artifactId-version.packaging</FONT></DIV></DIV>
<H3>仓库的分类</H3>
<DIV>
<DIV align="left" style="padding: 5px 0px;"><FONT>Maven 
仓库分为本地仓库和远程仓库，寻找构件时，首先从本地仓库找，找不到则到远程仓库找，再找不到就报错；在远程仓库中找到了，就下载到本地仓库再使用。中央仓库是 
Maven 
核心自带的远程仓库，默认地址：http://repo1.maven.org/maven2。除了中央仓库，还有其它很多公共的远程仓库。私服是架设在本机或局域网中的一种特殊的远程仓库，通过私服可以方便的管理其它所有的外部远程仓库。</FONT></DIV>
<DIV align="left"><IMG alt="图片不存在" src="仓库简介_files/20160129-02.png"></DIV></DIV>
<H4>本地仓库</H4>
<DIV>
<DIV align="left" style="padding: 5px 0px;"><FONT>Maven 
本地仓库默认地址为：${user.home}/.m2/repository。</FONT></DIV>
<DIV align="left"><IMG alt="图片不存在" src="仓库简介_files/20160129-03.png"></DIV>
<DIV align="left" style="padding: 5px 0px;"><FONT>通过修改 
%MAVEN_HOME%/conf/settings.xml 
（或者：${user.home}/.m2/settings.xml，针对当前用户（推荐））配置文件可以更改本地仓库的位置。</FONT></DIV>
<DIV align="left"><IMG alt="图片不存在" src="仓库简介_files/20160129-04.png"></DIV></DIV>
<H4>中央仓库</H4>
<DIV>
<DIV align="left" style="padding: 5px 0px;"><FONT>安装完 Maven 
，本地仓库几乎是空的，这时需要从远程仓库下载所需构件。Maven 配置了一个默认的远程仓库，即中央仓库，找到 
%MAVEN_HOME%/lib/maven-model-builder-3.2.1.jar，打开 
org/apache/maven/model/pom-4.0.0.xml 超级POM：</FONT></DIV>
<DIV align="left"><IMG alt="图片不存在" src="仓库简介_files/20160129-05.png"></DIV></DIV>
<H4>在项目中添加其他远程仓库</H4>
<P style="text-indent: 0.8cm;">当中央仓库找不到所需的构件时，我们可以配置 pom.xml ，添加其它的远程仓库。 </P>
<PRE class="brush: xml;">&lt;repositories&gt;
    &lt;repository&gt;
        &lt;id&gt;Sonatype&lt;/id&gt;
        &lt;name&gt;Sonatype Repository&lt;/name&gt;
        &lt;url&gt;http://repository.sonatype.org/content/groups/public/&lt;/url&gt;
        &lt;layout&gt;default&lt;/layout&gt;
        &lt;releases&gt;
            &lt;enabled&gt;true&lt;/enabled&gt;
        &lt;/releases&gt;
        &lt;snapshots&gt;
            &lt;enabled&gt;false&lt;/enabled&gt;
        &lt;/snapshots&gt;
    &lt;/repository&gt;
&lt;/repositories&gt;
</PRE>
<P style="text-indent: 0.8cm;">其中 id 必须唯一，若不唯一，如设置为 central 将覆盖中央仓库的配置。 </P>
<H4>镜像仓库</H4>
<P style="text-indent: 0.8cm;">镜像仓库可以理解为仓库的副本，从仓库中可以找到的构件，从镜像仓库中也可以找到。比如针对中央仓库 
http://repo1.maven.org/maven2 ，在中国有它的镜像仓库，这样我们直接访问镜像仓库，更快更稳定。修改settings.xm配置 
</P>
<PRE class="brush: xml;">&lt;settings&gt;
    ...
    &lt;mirrors&gt;
        &lt;mirror&gt;
            &lt;id&gt;maven.net.cn&lt;/id&gt;
            &lt;name&gt;central mirror in china&lt;/name&gt;
            &lt;url&gt;http://maven.net.cn/content/groups/public&lt;/url&gt;
            &lt;mirrorOf&gt;central&lt;/mirrorOf&gt;    &lt;!--表明为central中央仓库配置镜像仓库--&gt;
        &lt;/mirror&gt;
    &lt;/mirrors&gt;
    ...
&lt;/settings&gt;

</PRE>
<P style="text-indent: 0.8cm;">其中，&lt;mirrorOf&gt; 
指明了为哪个仓库配置镜像，可以使用通配符如：&lt;mirrorOf&gt;*&lt;/mirrorOf&gt;，或者 
&lt;mirrorOf&gt;repo1,repo2&lt;/mirrorOf&gt; 
等进行匹配。一旦配置了镜像，所有针对原仓库的访问将转到镜像仓库的访问，原仓库将不再能直接访问，即使镜像仓库不稳定或停用。在搭建私服的时候，我们通常为所有仓库设置镜像为私服地址，通过私服对所有仓库进行统一管理。&lt;mirrorOf&gt;*,!repo1&lt;/miiroOf&gt;匹配所有远程仓库，repo1除外，使用感叹号将仓库从匹配中排除。需要注意的是，由于镜像仓库完全屏蔽了被镜像仓库，当镜像仓库不稳定或者停止服务的时候，Maven仍将无法访问被镜像仓库，因而将无法下载构件。 
</P>
<H3>常用的仓库搜索地址</H3>
<H4><A href="http://search.maven.org/" 
target="_blank">http://search.maven.org/</A></H4>
<DIV>
<DIV align="left"><IMG alt="图片不存在" src="仓库简介_files/20160129-06.png"></DIV></DIV>
<H4><A href="http://mvnrepository.com/" 
target="_blank">http://mvnrepository.com/</A></H4>
<DIV>
<DIV align="left"><IMG alt="图片不存在" src="仓库简介_files/20160129-07.png"></DIV></DIV>
<H4><A href="https://repository.sonatype.org/" 
target="_blank">https://repository.sonatype.org/</A></H4>
<DIV>
<DIV align="left"><IMG alt="图片不存在" src="仓库简介_files/20160129-08.png"></DIV></DIV>
<HR style="border-width: 2px; border-color: lime;">

<DIV align="center">©copyright 版权所有   作者：zzy</DIV>
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shCore.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJava.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJScript.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushXml.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushSql.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushBash.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushVb.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/init.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/js/jquery.tools.min.js" type="text/javascript"></SCRIPT>
 <!-- make all links with the 'rel' attribute open overlays --> 
<SCRIPT>
  $(function() {
      $("#apple img[rel]").overlay({effect: 'apple'});
    });
</SCRIPT>
 </DIV></BODY></HTML>
